/**
 * 权限工具函数
 */
import { useUserStore } from '../stores/user'

/**
 * 检查用户是否有指定权限
 * @param {string} permission - 权限字符串，如 'user.view'
 * @returns {boolean}
 */
export function hasPermission(permission) {
  const userStore = useUserStore()
  const permissions = userStore.userInfo?.permissions || []
  
  // 超级管理员拥有所有权限
  if (userStore.userInfo?.is_superuser) {
    return true
  }
  
  return permissions.includes(permission)
}

/**
 * 检查用户是否有多个权限中的任意一个
 * @param {Array<string>} permissions - 权限数组
 * @returns {boolean}
 */
export function hasAnyPermission(permissions) {
  return permissions.some(permission => hasPermission(permission))
}

/**
 * 检查用户是否同时拥有多个权限
 * @param {Array<string>} permissions - 权限数组
 * @returns {boolean}
 */
export function hasAllPermissions(permissions) {
  return permissions.every(permission => hasPermission(permission))
}

/**
 * 权限指令（用于 v-permission）
 */
export const permissionDirective = {
  mounted(el, binding) {
    const { value } = binding
    
    if (value) {
      const hasAuth = Array.isArray(value) 
        ? hasAnyPermission(value) 
        : hasPermission(value)
      
      if (!hasAuth) {
        el.parentNode && el.parentNode.removeChild(el)
      }
    }
  }
}

/**
 * 权限守卫（用于路由）
 * @param {string|Array<string>} permission - 所需权限
 * @returns {boolean}
 */
export function checkPermission(permission) {
  if (!permission) return true
  
  if (Array.isArray(permission)) {
    return hasAnyPermission(permission)
  }
  
  return hasPermission(permission)
}

